package com.haorui.lygyd.wxapi.common;

import com.alibaba.fastjson.JSONObject;
import com.haorui.lygyd.wxapi.entity.WXUserInfoEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author 陈刚
 * @version 1.0
 * @project znsm
 * @package com.haorui.wxapi.common
 * @createDate 2017-09-30 16:06
 * @modfiyDate
 * @function
 */
public class WeixinUserInfo {
    private static Logger log = LoggerFactory.getLogger(CommonUtil.class);


    public static WXUserInfoEntity getUserInfo(String accessToken, String openId) {
        WXUserInfoEntity weixinUserInfo = null;
        // 拼接请求地址
        String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openId;
        // 获取用户信息
        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            try {
                weixinUserInfo = new WXUserInfoEntity();
                // 用户的标识
                weixinUserInfo.setOpenId(jsonObject.getString("openid"));
                // 关注状态（1是关注，0是未关注），未关注时获取不到其余信息
                weixinUserInfo.setSubscribe(jsonObject.getIntValue("subscribe"));
                // 用户关注时间
                weixinUserInfo.setSubscribeTime(jsonObject.getString("subscribe_time"));
                // 昵称
                weixinUserInfo.setNickname(jsonObject.getString("nickname"));
                // 用户的性别（1是男性，2是女性，0是未知）
                String sex="";
                if (jsonObject.getIntValue("sex")==1)
                {
                    sex="男";
                }
                if (jsonObject.getIntValue("sex")==2)
                {
                    sex="女";
                }
                weixinUserInfo.setSex(sex);
                // 用户所在国家
                weixinUserInfo.setCountry(jsonObject.getString("country"));
                // 用户所在省份
                weixinUserInfo.setProvince(jsonObject.getString("province"));
                // 用户所在城市
                weixinUserInfo.setCity(jsonObject.getString("city"));
                // 用户的语言，简体中文为zh_CN
                weixinUserInfo.setLanguage(jsonObject.getString("language"));
                // 用户头像
                weixinUserInfo.setHeadImgUrl(jsonObject.getString("headimgurl"));
            } catch (Exception e) {
                if (0 == weixinUserInfo.getSubscribe())
                {
                    log.error("用户{}已取消关注", weixinUserInfo.getOpenId());
                } else {
                    int errorCode = jsonObject.getIntValue("errcode");
                    String errorMsg = jsonObject.getString("errmsg");
                    log.error("获取用户信息失败 errcode:{} errmsg:{}", errorCode, errorMsg);
                }
            }
        }
        //判断是否拿到openid
        if(weixinUserInfo==null || weixinUserInfo.getOpenId()==null){
            return null;
        }else{
            return weixinUserInfo;
        }

    }

    public static void main(String args[]) {
        // 获取接口访问凭证
        String accessToken = CommonUtil.getToken("wxa80c0386c5e8cbd9", "402ce1f05507d483d7aac9da8aab51e4").getAccessToken();
        /**
         * 获取用户信息
         * ojdRewQ31H5Bu-R-az9knLHmNbXs
         * ojdRewW6qRwCzqq6IoOljpWruBQI
         */
        WXUserInfoEntity user = getUserInfo(accessToken, "ojdRewQ31H5Bu-R-az9knLHmNbXs");
//
    }
}
